package chapter1.section1;

import org.junit.Test;

/**
 * 题目描述：给定一个字符串，要求将字符串前面的若干字符移到字符串的尾部。例如，将字符串“abcdef”的钱3个字符‘a’、‘b’和‘c’移到字符串的尾部，那么
 * 原字符串将变成‘defabc’。请写一个方法实现此功能。
 * @author lidd
 *
 */
/*
 * 时间复杂度O(mn),空间复杂度O(1)
 */
public class StringRotation {

	//将一个字符移到字符串尾部的功能
	public void leftShiftOne(char[] s, int n) {
		//保存第一个字符
		char t = s[0];
		for(int i =1; i<n; i++) {
			s[i-1] = s[i];
		}
		s[n-1] = t;
	}
	
	//将m个字符移到字符串的尾部
	public void leftRotationString(char[] s, int n, int m) {
		while(m-->0) {
			leftShiftOne(s,n);
		}
	}
	//测试类
	@Test
	public void test() {
		String str = "abcdef";
		char[] s = str.toCharArray();
		leftRotationString(s,s.length, 3);
		for(char c : s) {
			System.out.print(c+" ");
		}
	}
}
